﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CSNN
{
    /// <summary>
    /// Образ, применяемый к нейронной сети для обучения
    /// </summary>
    public class TrainingImage : Image
    {
        /// <summary>
        /// Размерность выходного образа
        /// </summary>
        public int OutputSignalsCount { get; set; }

        /// <summary>
        /// Массив выходных сигналов
        /// </summary>
        public double[] OutputSignals;

        public TrainingImage() : base()
        {
            this.OutputSignalsCount = 0;
            this.OutputSignals = null;            
        }

        /// <summary>
        /// Установка обучающего множества
        /// </summary>
        /// <param name="InputSignals">Входное множество сигналов образа</param>
        /// <param name="OutputSignals">Выходное множество сигналов образа</param>
        public void SetTrainingImage(double[] InputSignals, double[] OutputSignals)
        {
            base.SetImage(InputSignals);
            this.OutputSignalsCount = OutputSignals.Count<double>();
            this.OutputSignals = new double[this.OutputSignalsCount];
            OutputSignals.CopyTo(this.OutputSignals, 0);
        }

        /// <summary>
        /// Получение массива выходных сигналов для нейронной сети, подобающих данному образу
        /// </summary>
        /// <returns></returns>
        public double GetOutputsSignals(int NumOfOutputSignal)
        {
            return this.OutputSignals[NumOfOutputSignal];
        }


    }
}
